1. Field of the Invention
The present invention relates to the field of browser design and, more particularly, to a voice browser that uses a plug-in framework to extend a supported markup language.
2. Description of the Related Art
Voice extensible Markup Language (VoiceXML) is a markup language standardized by the World Wide Web Consortium (W3C) for specifying interactive voice dialogues between human and computer, such as dialogues used by an Interactive Voice Response (IVR) system. VoiceXML has defined tags that instruct a VoiceXML interpreter to provide speech synthesis, automatic speech recognition, dialog management, sound playback, Dual Tone Multi-Frequency (DTMF) key press recognition, and telephony call control functions. A common architecture in which VoiceXML interpreters are utilized includes a bank of deployed VoiceXML interpreters attached to a Public Switched Telephone Network (PSTN).
Although based upon a Standard General Markup Language (SGML) language, specifically the extensible Markup Language (XML), VoiceXML should not be confused with HyperText Markup Language (HTML), which is an SGML based language in which is many Web pages are written.
HTML was designed for visual Web pages and lacks an ability to control user-application interactions that are necessary for a speech-based interface. A HTML interface is designed to process multiple elements at a time and to display the results of these processed elements simultaneously.
A voice-based markup interpreter, such as a VoiceXML interpreter, has numerous constraints and functions related to speech-based interfaces that cause voice-based interpreters to operate in a manner distinct from a manner in which visual markup interpreters or visual browsers operate. For example, with a speech-based interface that presents VoiceXML output, only one element is processed and/or presented at a time, since a user can only hear one item at a time.
It is a common practice for VoiceXML interpreters to include features outside of the standards. These features allow VoiceXML application authors to tap into Computer Telephony Integration (CTI) code, to integrate new VoiceXML code with legacy code, and to provide platform specific functions. CTI is a technology that allows interactions on a telephone and a computer to be integrated or coordinated. CTI services include, but are not limited to, Automatic Call Distribution (ACD) services, power dialing services, IVR services, and other customer facing or agent facing services.
Adding extensions to a VoiceXML reference implementation (RI) is commonly solved by obtaining the source code, and modifying the source code as desired. A RI as used herein is a baseline implementation of a markup interpreter that specifies supported voice-based markup. It should be appreciated that integrating proprietary extensions on a RI by modifying source code, results in a single, monolithic code stream containing the base code, the proprietary extensions, and related code modifications.
This conventional approach has numerous drawbacks. One drawback is that RI updates are difficult to integrate because extensions are woven into the RI. Consequently, code to be maintained includes both the RI and extensions. Maintenance costs can be extensive because RI expertise and extension expertise reside in different groups, each group somewhat unfamiliar with details pertaining to the other. Cost for outsourcing code maintenance to one or more external groups can be high.
Another drawback is that a solution achieved by modifying source code to include the RI and proprietary extension results in a proprietary solution. The propriety solution cannot be bundled in a compartmentalized fashion for resale in a manner that allows multiple value added resellers to easily add additional features. Instead, adding new features requires each feature provider to modify the RI and/or to modify an RI that includes extensions. Coordinating efforts for a customized solution among different feature providers can be time consuming, expensive, and can result in code conflicts caused by incompatibilities in the added features.
What is needed is a mechanism for adding extensions to VoiceXML interpreters that does not require the source code of the VoiceXML interpreter to be modified.